Apex Governor Limits হলো Salesforce-এর একটি নিয়ম, যা একটি Apex কোড ব্লকে ব্যবহৃত রিসোর্সের পরিমাণ নির্ধারণ ও সীমিত করে। Salesforce একটি মাল্টি-টেন্যান্ট প্ল্যাটফর্ম, যার মানে একাধিক ব্যবহারকারী একই শারীরিক সার্ভার শেয়ার করে। এর ফলে, Salesforce নিশ্চিত করে যে, একটি ব্যবহারকারীর কোড বা প্রক্রিয়া সার্ভারের অতিরিক্ত রিসোর্স না নেয় এবং অন্য ব্যবহারকারীদের কার্যক্রমে ব্যাঘাত সৃষ্টি না করে।
Apex Governor Limits ব্যবহার করে Salesforce প্রতিটি অ্যাপ্লিকেশন বা কোড ব্লকের জন্য নির্দিষ্ট রিসোর্সের সীমা নির্ধারণ করে, যেমন DML অপারেশনের সংখ্যা, SOQL কুয়েরির সংখ্যা, API কলের সংখ্যা ইত্যাদি। যদি কোনো Apex কোড Governor Limits অতিক্রম করে, তবে Salesforce একটি Exception তৈরি করে এবং কোড এক্সিকিউশন বন্ধ করে দেয়।
সার্ভার পারফরম্যান্স নিশ্চিতকরণ: Governor Limits নিশ্চিত করে যে একাধিক ব্যবহারকারী একই শারীরিক সার্ভারে কাজ করলেও সার্ভারের কার্যক্ষমতা বজায় থাকে এবং সার্ভারে অতিরিক্ত লোড পড়ে না।
রিসোর্স ব্যবহারের সামঞ্জস্য রক্ষা: Apex কোড সীমার মধ্যে থেকে রিসোর্স ব্যবহার করে, যাতে অন্য ব্যবহারকারীদের কার্যক্রমে ব্যাঘাত না ঘটে।
ত্রুটি সনাক্তকরণ: Governor Limits-এর কারণে উন্নয়নকারীরা দ্রুত জানতে পারেন কোড কোথায় অতিরিক্ত রিসোর্স ব্যবহার করছে এবং সঠিক অপটিমাইজেশন করে কোড কার্যক্ষমতা উন্নত করতে পারেন।
সিস্টেম স্থায়িত্ব এবং নিরাপত্তা নিশ্চিতকরণ: Governor Limits নিশ্চিত করে যে কোনো ব্যবহারকারী বা কোড সার্ভারের অতিরিক্ত রিসোর্স নিয়ে পুরো সিস্টেমের কার্যক্ষমতা বা নিরাপত্তার জন্য ঝুঁকি তৈরি না করে।
Salesforce-এ বিভিন্ন ধরনের Governor Limits রয়েছে, যা বিভিন্ন কার্যক্রমে রিসোর্স ব্যবহারের সীমা নির্ধারণ করে। Apex-এর প্রধান Governor Limits এর কিছু উদাহরণ নিচে দেয়া হলো।
SOQL Query Limits: একটি Transaction-এ সর্বাধিক ১০০টি SOQL কুয়েরি চালানো যায়। এটি Bulk SOQL Query ব্যবহার করে কোড অপ্টিমাইজেশনে সহায়ক।
DML Statement Limits: একটি Transaction-এ সর্বাধিক ১৫০টি DML অপারেশন চালানো যায়, যেমন insert
, update
, delete
ইত্যাদি। এটি Bulk DML ব্যবহার করে কোড কার্যক্ষমতা উন্নত করতে সহায়ক।
CPU Time Limit: একটি Transaction-এ Apex কোডের জন্য সর্বাধিক CPU সময় ১০,০০০ মিলিসেকেন্ড (আনুমানিক ১০ সেকেন্ড)।
Heap Size Limit: একটি Transaction-এ সর্বাধিক ৬ এমবি হিপ মেমোরি ব্যবহার করা যায়। এটি বড় ডেটা প্রসেসিং-এর সময় কোড কার্যক্ষমতা নিশ্চিত করে।
Callout Limit: একটি Transaction-এ সর্বাধিক ১০০টি HTTP বা API কলআউট করা যায়। এটি বহিরাগত সার্ভারে কল করার সীমা নির্ধারণ করে।
Total Number of Records Retrieved by SOQL Queries: একটি Transaction-এ সর্বাধিক ৫০,০০০টি রেকর্ড SOQL কুয়েরি দ্বারা রিটার্ন করা যায়। এটি বড় ডেটাসেটের জন্য কাজের কার্যক্ষমতা উন্নত করে।
Number of Future Calls: একটি Transaction-এ সর্বাধিক ৫০টি Future Method কল করা যায়।
নিচের উদাহরণে SOQL এবং DML অপারেশন সীমার মধ্যে রাখা হয়েছে।
public class AccountManager {
public void updateAccountIndustry(List<Id> accountIds) {
// Governor Limit মেনে Bulk SOQL Query ব্যবহার করা হয়েছে
List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
for (Account acc : accounts) {
acc.Industry = 'Technology';
}
// Governor Limit মেনে Bulk DML Statement ব্যবহার করা হয়েছে
update accounts;
}
}
যদি কোনো Apex কোড Governor Limits অতিক্রম করে, তবে Salesforce একটি Unhandled Exception তৈরি করে, যার ফলে Transaction বন্ধ হয়ে যায় এবং প্রক্রিয়াটি সম্পন্ন হয় না। উদাহরণস্বরূপ, SOQL কুয়েরির সংখ্যা ১০০ এর বেশি হলে Too Many SOQL Queries Exception তৈরি হয়।
try {
// কোড যা Governor Limits অতিক্রম করতে পারে
} catch (Exception e) {
System.debug('Exception Occurred: ' + e.getMessage());
}
catch
ব্লক সেই Exception ক্যাপচার করবে।Bulkification: একাধিক রেকর্ড একত্রে প্রক্রিয়া করতে Bulk SOQL ও Bulk DML অপারেশন ব্যবহার করা উচিত। উদাহরণ: Loop-এর ভিতরে DML অপারেশন ব্যবহার না করে Loop-এর বাইরে একবারে প্রক্রিয়া করা।
Collection ব্যবহার: অনেক রেকর্ড নিয়ে কাজ করার সময় List, Set, বা Map ব্যবহার করা উচিত, যাতে কোড আরও কার্যকর ও সীমার মধ্যে থাকে।
Efficient Querying: Query-তে শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো উল্লেখ করুন এবং যেখানে সম্ভব LIMIT
ব্যবহার করুন, যা CPU এবং SOQL ব্যবহার সীমার মধ্যে রাখে।
Avoid Recursive Trigger: Trigger-এর মধ্যে Recursive Loop এড়িয়ে চলা উচিত, যাতে Governor Limit অতিক্রম না হয়।
Asynchronous Processing: বড় ডেটা প্রসেসিং বা লং-রানিং অপারেশনের জন্য Asynchronous Apex যেমন Future Method, Queueable Apex, Batch Apex ব্যবহার করা।
Apex Governor Limits Salesforce প্ল্যাটফর্মে কোড এক্সিকিউশন ও রিসোর্স ব্যবহারের সীমা নির্ধারণ করে, যা সার্ভারের স্থায়িত্ব, কার্যক্ষমতা, এবং নিরাপত্তা নিশ্চিত করে। Governor Limits Apex ডেভেলপারদেরকে কার্যকরী কোড অপ্টিমাইজ করতে সহায়ক এবং Salesforce প্ল্যাটফর্মে কার্যক্ষম ও সীমাবদ্ধতা বজায় রেখে কাজ করতে উৎসাহিত করে।
common.read_more